﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Script.Serialization;
using System.Net;
using System.IO;
using LiquidacionComision.LiquidacionesService;
using System.Messaging;

namespace LiquidacionComision.Controllers
{
    [HandleError]
    public class LiquidacionController : Controller
    {

        LiquidacionesService.LiquidacionesClient liquidacionService = new LiquidacionesService.LiquidacionesClient();        
        JavaScriptSerializer js = new JavaScriptSerializer();

        public ActionResult Iniciar()
        {
            TempData["Periodos"] = liquidacionService.ListarPeriodos().ToList<Periodo>();
            return View();
        }


        public ActionResult ProcesarAccion()
        {

            string accion = (Request.QueryString["accion"] == null) ? string.Empty : Request.QueryString["accion"];
            string periodos = (Request.QueryString["periodos"] == null) ? string.Empty : Request.QueryString["periodos"];
            string jsonData = new StreamReader(periodos).ReadToEnd();
            string[] lista = js.Deserialize<string[]>(jsonData);

            string estado = string.Empty;
            string anho = string.Empty;
            string mes = string.Empty;
            string[] temp;
            estado = (accion.Equals("abrir"))?"Abierto":"Cerrado";

            foreach (String peri in lista)
            {
                temp = peri.Split('-');
                anho = temp[0];
                mes = temp[1];

                //Encolar cada registro
                if (!MessageQueue.Exists(Constantes.COLA_RUTA))
                    MessageQueue.Create(Constantes.COLA_RUTA);
                MessageQueue cola = new MessageQueue(Constantes.COLA_RUTA);
                Message mensaje = new Message();
                mensaje.Label = "Modificar Periodo";
                Periodo periodo = new Periodo() { Codigo = peri, Anho = Int32.Parse(anho), Estado = estado, Mes = Int32.Parse(mes) };
                mensaje.Body = periodo;
                cola.Send(mensaje);
                Console.ReadLine();
            }
            return null;
        }

        
    }
}
